草庐IT

MySQL Workbench 符号引用

全部标签

c++ - 如何轻松生成具有静态存储的符号列表?

我们有一个用GCC和MSVC构建的大型C++项目,我们遇到了staticinitializationorderfiasco.有没有一种方法可以生成参与静态初始化的符号列表,以便我可以生成解决问题的计划?我已经从GCC和MSVC创建了一个映射文件。MSVC的输出看起来不是很有用。似乎可以使用GCC的映射文件-我提取了与bss部分相关的所有内容。然而,许多符号来自图书馆,只是给信息添加了噪音。是否有技巧或其他一些方便的方法来获取我正在寻找的信息(除了手动读取每个源文件之外)? 最佳答案 对于VisualC++:对.map文件的行进行排序

c++ - 在 C++ 中,说一个变量具有右值引用类型有意义吗?

我对类似X&&x=static_cast(obj_x);的思考方式就是这样,尽管有外表,x最终成为一个普通的左值引用。我最近遇到了thisarticleScottMeyers坚持认为x将是右值引用类型的左值。这是真的有意义,还是没有区别的区别?具体来说,给定X&&x=static_cast(obj_x)或X&x=obj_x;对于x的这两个定义,是否有任何后续代码的行为会有所不同?? 最佳答案 重要的区别在于R值引用是命名的还是未命名的(返回值)。因此,要回答所写的问题,不,没有后续代码会以不同方式对待x的两个定义(除了cpplear

c++ - QT 5.6 静态未解析的外部符号

我正在开发一个使用QWidget并静态链接Qt5.6的小型应用程序。我现在正在使用VS12。#include#includeintmain(intargc,char*argv[]){QApplicationa(argc,argv);QMainWindoww;w.show();returna.exec();}编译正常,但出现链接器错误。1>libGLESv2d.lib(global_state.obj):errorLNK2019:unresolvedexternalsymbol"unsignedlong__cdeclCreateTLSIndex(void)"(?CreateTLSInde

c++ - C++中的自动引用

这段代码在visualstudio2015中给我奇怪的调试信息intmain(){constinti=42;autoj=i;constauto&k=i;auto*p=&i;constautoj2=i,&k2=i;}生成的类型是:&k=constint&&k2=constint*我认为它们都应该是constint&。问题是,为什么我的VisualStudio调试器说&k和&k2是不同的类型? 最佳答案 k和k2都是constint&类型。这是完整的类型列表。请注意,顶级const为auto丢弃类型推导。intmain(){consti

c++ - std::shared_ptr<std::string const> 能否作为引用计数不可变字符串的有效实现?

理想情况下,不可变字符串类只需要为每个字符串分配一个内存。甚至引用计数也可以存储在与字符串本身相同的内存块中。string的简单实现和shared_ptr将为shared_ptr分配三block不同的内存:字符串缓冲区的内存字符串对象的内存引用计数的内存现在,我知道在使用std::make_shared()时,智能实现可以将最后两个组合成一个分配。但这仍然会留下两个分配。当您知道字符串是不可变的时,字符串缓冲区将不会被重新分配,因此应该可以将它与字符串对象集成在一起,只留下一次分配。我知道一些字符串实现已经对短字符串使用了这样的优化,但我正在寻找一个不管字符串长度如何都这样做的实现。我

c++ - STL 容器的右值引用限定符

为什么元素访问STL容器的成员函数,例如std::array::operator[]或std::vector::operator[]没有右值引用限定符重载?我当然可以做到std::move(generate_vector()[10]),但我很好奇在标准化引用限定符时是否考虑添加右值引用限定符重载。我认为std::array和std::tuple实际上是同一件事,后者的“元素访问函数(即std::get)”对于const与非const以及左值与右值的所有组合都重载了。为什么不是前者?将右值引用限定的元素访问成员函数(返回右值引用)添加到我的自定义容器是个好主意吗?编辑RichardCri

c++ - Rcpp 中值和引用参数之间的区别

这个问题在这里已经有了答案:Rcpppassbyreferencevs.byvalue(1个回答)关闭4年前。考虑这两个函数:library(Rcpp)cppFunction("NumericVectorfunc1(NumericVector&x){for(inti=0;i唯一的区别是func1将x作为一个引用参数,而func2将它作为一个值。如果这是常规的C++,我会将其理解为func1被允许在调用代码中更改x的值,而这不会发生在中func2.但是:>xx[1]0.20.40.60.81.01.21.41.61.82.0>func1(x)[1]0.40.81.21.62.02.42.

c++ - 为什么我的 `.a` 文件中所有符号的值都是 0

长话短说,我正在通过另一个库的构建系统构建jsoncpp(webrtc,说它是庞然大物将是一种轻描淡写的说法)。这意味着我正在浏览一个我几乎无法控制也不熟悉的构建系统。我只想说,当我在MacOS上构建libjsoncpp.a时,生成的文件工作得非常好。当我在Linux上编译时,与生成的.a的链接导致我使用的所有内容都为undefinedreference。深入研究该文件,我注意到虽然MacOS版本看起来“正常”,如下所示(摘录):0000000000001c10T__ZNK4Json5ValueeqERKS0_0000000000001c00T__ZNK4Json5ValuegeERK

c++ - 对类型的非常量左值引用 - 使用 Class 类型的参数时 Objective-C++ 包装器中的错误

我有两个用Objective-C++编写的包装器类,用于它们等效的C++类。我们称它们为OABCClass和OXYZCallbackInterface。现在我在C++(ABCClass)中有一个方法,其中一个参数是一个接口(interface)-XYZCallbackInterface。例如:std::stringmethodWithArguments(std::stringreq,CommonNamespace::XYZCallbackInterface&callback);在我的Objective-C++包装器类中,即OABCClass我对上述C++方法的方法实现如下所示:-(NS

c++ - 有符号字符的按位运算

如果平台的char类型是有符号的并且一些参数在负数范围内(例如,char_bitmatch('\xf0','\xc0','\x20'))?staticconstexprboolchar_bitmatch(charc,charpos,charneg){return(c&pos)==pos&&!(c&neg);}上下文我问这个问题的原因是因为在带有-O3的GCC8.1.0中,我看到了只能由char_bitmatch('\xf0','\xc0','\x20')错误地返回true。此代码的行为符合预期:staticconstexprboolchar_bitmatch(charc_in,char